home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / swingall.jar / javax / swing / plaf / basic / BasicButtonUI.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-07-15  |  8.5 KB  |  265 lines

  1. package javax.swing.plaf.basic;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Component;
  5. import java.awt.Dimension;
  6. import java.awt.Font;
  7. import java.awt.FontMetrics;
  8. import java.awt.Graphics;
  9. import java.awt.Insets;
  10. import java.awt.Rectangle;
  11. import javax.swing.AbstractButton;
  12. import javax.swing.ButtonModel;
  13. import javax.swing.Icon;
  14. import javax.swing.JComponent;
  15. import javax.swing.LookAndFeel;
  16. import javax.swing.SwingUtilities;
  17. import javax.swing.UIManager;
  18. import javax.swing.border.Border;
  19. import javax.swing.plaf.ButtonUI;
  20. import javax.swing.plaf.ComponentUI;
  21. import javax.swing.plaf.UIResource;
  22. import javax.swing.text.View;
  23.  
  24. public class BasicButtonUI extends ButtonUI {
  25.    private static final BasicButtonUI buttonUI = new BasicButtonUI();
  26.    protected int defaultTextIconGap;
  27.    private int shiftOffset = 0;
  28.    protected int defaultTextShiftOffset;
  29.    private boolean defaults_initialized = false;
  30.    private static final String propertyPrefix = "Button.";
  31.    private Color defaultForeground = null;
  32.    private Color defaultBackground = null;
  33.    private Font defaultFont = null;
  34.    private Border defaultBorder = null;
  35.    private static Rectangle viewRect = new Rectangle();
  36.    private static Rectangle textRect = new Rectangle();
  37.    private static Rectangle iconRect = new Rectangle();
  38.  
  39.    protected void clearTextShiftOffset() {
  40.       this.shiftOffset = 0;
  41.    }
  42.  
  43.    protected BasicButtonListener createButtonListener(AbstractButton var1) {
  44.       return new BasicButtonListener(var1);
  45.    }
  46.  
  47.    public static ComponentUI createUI(JComponent var0) {
  48.       return buttonUI;
  49.    }
  50.  
  51.    public int getDefaultTextIconGap(AbstractButton var1) {
  52.       return this.defaultTextIconGap;
  53.    }
  54.  
  55.    public Dimension getMaximumSize(JComponent var1) {
  56.       Dimension var2 = this.getPreferredSize(var1);
  57.       View var3 = (View)var1.getClientProperty("html");
  58.       if (var3 != null) {
  59.          var2.width = (int)((float)var2.width + (var3.getMaximumSpan(0) - var3.getPreferredSpan(0)));
  60.       }
  61.  
  62.       return var2;
  63.    }
  64.  
  65.    public Dimension getMinimumSize(JComponent var1) {
  66.       Dimension var2 = this.getPreferredSize(var1);
  67.       View var3 = (View)var1.getClientProperty("html");
  68.       if (var3 != null) {
  69.          var2.width = (int)((float)var2.width - (var3.getPreferredSpan(0) - var3.getMinimumSpan(0)));
  70.       }
  71.  
  72.       return var2;
  73.    }
  74.  
  75.    public Dimension getPreferredSize(JComponent var1) {
  76.       AbstractButton var2 = (AbstractButton)var1;
  77.       return BasicGraphicsUtils.getPreferredButtonSize(var2, this.defaultTextIconGap);
  78.    }
  79.  
  80.    protected String getPropertyPrefix() {
  81.       return "Button.";
  82.    }
  83.  
  84.    protected int getTextShiftOffset() {
  85.       return this.shiftOffset;
  86.    }
  87.  
  88.    protected void installDefaults(AbstractButton var1) {
  89.       String var2 = this.getPropertyPrefix();
  90.       if (!this.defaults_initialized) {
  91.          this.defaultTextIconGap = (Integer)UIManager.get(var2 + "textIconGap");
  92.          this.defaultTextShiftOffset = (Integer)UIManager.get(var2 + "textShiftOffset");
  93.          this.defaults_initialized = true;
  94.       }
  95.  
  96.       if (var1.isContentAreaFilled()) {
  97.          ((JComponent)var1).setOpaque(true);
  98.       } else {
  99.          ((JComponent)var1).setOpaque(false);
  100.       }
  101.  
  102.       if (var1.getMargin() == null || var1.getMargin() instanceof UIResource) {
  103.          var1.setMargin(UIManager.getInsets(var2 + "margin"));
  104.       }
  105.  
  106.       LookAndFeel.installColorsAndFont(var1, var2 + "background", var2 + "foreground", var2 + "font");
  107.       LookAndFeel.installBorder(var1, var2 + "border");
  108.    }
  109.  
  110.    protected void installKeyboardActions(AbstractButton var1) {
  111.       BasicButtonListener var2 = (BasicButtonListener)((JComponent)var1).getClientProperty(this);
  112.       if (var2 != null) {
  113.          var2.installKeyboardActions(var1);
  114.       }
  115.  
  116.    }
  117.  
  118.    protected void installListeners(AbstractButton var1) {
  119.       BasicButtonListener var2 = this.createButtonListener(var1);
  120.       if (var2 != null) {
  121.          ((JComponent)var1).putClientProperty(this, var2);
  122.          ((Component)var1).addMouseListener(var2);
  123.          ((Component)var1).addMouseMotionListener(var2);
  124.          ((Component)var1).addFocusListener(var2);
  125.          ((JComponent)var1).addPropertyChangeListener(var2);
  126.          var1.addChangeListener(var2);
  127.       }
  128.  
  129.    }
  130.  
  131.    public void installUI(JComponent var1) {
  132.       this.installDefaults((AbstractButton)var1);
  133.       this.installListeners((AbstractButton)var1);
  134.       this.installKeyboardActions((AbstractButton)var1);
  135.       BasicHTML.updateRenderer(var1, ((AbstractButton)var1).getText());
  136.    }
  137.  
  138.    public void paint(Graphics var1, JComponent var2) {
  139.       AbstractButton var3 = (AbstractButton)var2;
  140.       ButtonModel var4 = var3.getModel();
  141.       FontMetrics var5 = var1.getFontMetrics();
  142.       Insets var6 = var2.getInsets();
  143.       viewRect.x = var6.left;
  144.       viewRect.y = var6.top;
  145.       viewRect.width = ((JComponent)var3).getWidth() - (var6.right + viewRect.x);
  146.       viewRect.height = ((JComponent)var3).getHeight() - (var6.bottom + viewRect.y);
  147.       textRect.x = textRect.y = textRect.width = textRect.height = 0;
  148.       iconRect.x = iconRect.y = iconRect.width = iconRect.height = 0;
  149.       Font var7 = ((Component)var2).getFont();
  150.       var1.setFont(var7);
  151.       String var8 = SwingUtilities.layoutCompoundLabel(var2, var5, var3.getText(), var3.getIcon(), var3.getVerticalAlignment(), var3.getHorizontalAlignment(), var3.getVerticalTextPosition(), var3.getHorizontalTextPosition(), viewRect, iconRect, textRect, var3.getText() == null ? 0 : this.defaultTextIconGap);
  152.       this.clearTextShiftOffset();
  153.       if (var4.isArmed() && var4.isPressed()) {
  154.          this.paintButtonPressed(var1, var3);
  155.       }
  156.  
  157.       if (var3.getIcon() != null) {
  158.          this.paintIcon(var1, var2, iconRect);
  159.       }
  160.  
  161.       if (var8 != null && !var8.equals("")) {
  162.          View var9 = (View)var2.getClientProperty("html");
  163.          if (var9 != null) {
  164.             var9.paint(var1, textRect);
  165.          } else {
  166.             this.paintText(var1, var2, textRect, var8);
  167.          }
  168.       }
  169.  
  170.       if (var3.isFocusPainted() && ((JComponent)var3).hasFocus()) {
  171.          this.paintFocus(var1, var3, viewRect, textRect, iconRect);
  172.       }
  173.  
  174.    }
  175.  
  176.    protected void paintButtonPressed(Graphics var1, AbstractButton var2) {
  177.    }
  178.  
  179.    protected void paintFocus(Graphics var1, AbstractButton var2, Rectangle var3, Rectangle var4, Rectangle var5) {
  180.    }
  181.  
  182.    protected void paintIcon(Graphics var1, JComponent var2, Rectangle var3) {
  183.       AbstractButton var4 = (AbstractButton)var2;
  184.       ButtonModel var5 = var4.getModel();
  185.       Icon var6 = null;
  186.       if (!var5.isEnabled()) {
  187.          var6 = var4.getDisabledIcon();
  188.       } else if (var5.isPressed() && var5.isArmed()) {
  189.          var6 = var4.getPressedIcon();
  190.          if (var6 == null) {
  191.             var6 = var4.getIcon();
  192.          } else {
  193.             this.clearTextShiftOffset();
  194.          }
  195.       } else if (var4.isRolloverEnabled() && var5.isRollover()) {
  196.          var6 = var4.getRolloverIcon();
  197.       }
  198.  
  199.       if (var6 == null) {
  200.          var6 = var4.getIcon();
  201.       }
  202.  
  203.       if (var5.isPressed() && var5.isArmed()) {
  204.          var6.paintIcon(var2, var1, var3.x + this.getTextShiftOffset(), var3.y + this.getTextShiftOffset());
  205.       } else {
  206.          var6.paintIcon(var2, var1, var3.x, var3.y);
  207.       }
  208.  
  209.    }
  210.  
  211.    protected void paintText(Graphics var1, JComponent var2, Rectangle var3, String var4) {
  212.       AbstractButton var5 = (AbstractButton)var2;
  213.       ButtonModel var6 = var5.getModel();
  214.       FontMetrics var7 = var1.getFontMetrics();
  215.       if (var6.isEnabled()) {
  216.          var1.setColor(((Component)var5).getForeground());
  217.          BasicGraphicsUtils.drawString(var1, var4, var6.getMnemonic(), var3.x + this.getTextShiftOffset(), var3.y + var7.getAscent() + this.getTextShiftOffset());
  218.       } else {
  219.          var1.setColor(((Component)var5).getBackground().brighter());
  220.          BasicGraphicsUtils.drawString(var1, var4, var6.getMnemonic(), var3.x, var3.y + var7.getAscent());
  221.          var1.setColor(((Component)var5).getBackground().darker());
  222.          BasicGraphicsUtils.drawString(var1, var4, var6.getMnemonic(), var3.x - 1, var3.y + var7.getAscent() - 1);
  223.       }
  224.  
  225.    }
  226.  
  227.    protected void setTextShiftOffset() {
  228.       this.shiftOffset = this.defaultTextShiftOffset;
  229.    }
  230.  
  231.    protected void uninstallDefaults(AbstractButton var1) {
  232.       LookAndFeel.uninstallBorder(var1);
  233.       this.defaults_initialized = false;
  234.    }
  235.  
  236.    protected void uninstallKeyboardActions(AbstractButton var1) {
  237.       BasicButtonListener var2 = (BasicButtonListener)((JComponent)var1).getClientProperty(this);
  238.       if (var2 != null) {
  239.          var2.uninstallKeyboardActions(var1);
  240.       }
  241.  
  242.    }
  243.  
  244.    protected void uninstallListeners(AbstractButton var1) {
  245.       BasicButtonListener var2 = (BasicButtonListener)((JComponent)var1).getClientProperty(this);
  246.       ((JComponent)var1).putClientProperty(this, (Object)null);
  247.       if (var2 != null) {
  248.          ((Component)var1).removeMouseListener(var2);
  249.          ((Component)var1).removeMouseListener(var2);
  250.          ((Component)var1).removeMouseMotionListener(var2);
  251.          ((Component)var1).removeFocusListener(var2);
  252.          var1.removeChangeListener(var2);
  253.          ((JComponent)var1).removePropertyChangeListener(var2);
  254.       }
  255.  
  256.    }
  257.  
  258.    public void uninstallUI(JComponent var1) {
  259.       this.uninstallKeyboardActions((AbstractButton)var1);
  260.       this.uninstallListeners((AbstractButton)var1);
  261.       this.uninstallDefaults((AbstractButton)var1);
  262.       BasicHTML.updateRenderer(var1, "");
  263.    }
  264. }
  265.